博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】兼容php5,php7的cURL文件上传示例
阅读量:6824 次
发布时间:2019-06-26

本文共 2194 字,大约阅读时间需要 7 分钟。

转载来自:

 

index.html

    上传示例    
下面上传文件到中间脚本:
选择文件:

 

upload.php

* @site http://straiway.sinaapp.com */if (empty($_FILES['file'])) { exit('没有上传指定名称的文件');} // 先保存到本地,再上传$file = $_FILES['file'];$file_name = __DIR__ . "/{
$file['name']}";move_uploaded_file($_FILES['file']['tmp_name'], $file_name); // 本地测试时,可能需要更改下面的URL$ch = curl_init('http://localhost/test/upload_via_curl.php'); // 从php5.5开始,反对使用"@"前缀方式上传,可以使用CURLFile替代;// 据说php5.6开始移除了"@"前缀上传的方式if (class_exists('CURLFile')) { $file = new CURLFile($file_name); // 禁用"@"上传方法,这样就可以安全的传输"@"开头的参数值 curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);} else { $file = "@{
$file_name}";} // 从php5.2开始,要上传文件,必须给CURLOPT_POSTFIELDS传递数组,而不是字符串。// 也只有传递数组,http头部的"Content-Type"才会设置成"multipart/form-data"curl_setopt($ch, CURLOPT_POSTFIELDS, array('file_via_curl' => $file)); // 将传输结果作为curl_exec的返回值,而不是直接输出curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch);$error = curl_error($ch); if ($result) { $result_array = json_decode($result, true); if ($result_array) { if ($result_array['status']) { exit("上传成功!curl返回图片地址:{
$result_array['data']['url']}
"); } else { exit("curl上传失败!错误信息:{
$result['info']}"); } } else { exit("发生错误,curl返回结果:{
$result}"); }} else { exit('curl请求发生错误' . var_export($error, true));}

 

 

upload_curl.php

* @site http://straiway.sinaapp.com */ if (empty($_FILES['file_via_curl'])) { $return = array('status' => 0, 'info' => '没有上传指定名称的文件');} else { // 保存文件 $file = $_FILES['file_via_curl']; // 重命名文件,便于识别 $base_name = explode('.', $file['name']); $base_name[0] .= '_upload_var_curl'; $base_name = implode('.', $base_name); $file_name = __DIR__ . "/{
$base_name}"; if (move_uploaded_file($file['tmp_name'], $file_name)) { // 本地测试时,可能需要更改下面的URL $url = "http://localhost/test/{
$base_name}"; $return = array('status' => 1, 'info' => '上传成功', 'data' => array('url' => $url)); } else { $return = array('status' => 0, 'info' => '上传失败'); }} exit(json_encode($return));

 

你可能感兴趣的文章
es5 操作符运算标准
查看>>
前端技术选型的遗憾和经验教训
查看>>
详解ChinaCache分层自动化测试平台
查看>>
亚马逊发布新的AWS Step Functions集成
查看>>
敏捷2016大会主题演讲:现代敏捷
查看>>
一份关于Angular的倡议清单
查看>>
Service Mesh是大方向,那Database Mesh呢?
查看>>
Swift 4.1带来条件一致性等语言上的提升
查看>>
Apache Pulsar中的地域复制,第2篇:模式和实践
查看>>
百度开源AI硬件开发平台BIE-AI-Box和BIE-AI-Board
查看>>
管理微服务中的数据
查看>>
百度发布开源智能边缘计算平台OpenEdge
查看>>
如何用Uber JVM Profiler等可视化工具监控Spark应用程序?
查看>>
京东618:六年历程步步为营,京东商城的安全保卫战
查看>>
华泰证券:如何自研高效可靠的交易系统通信框架?
查看>>
网易云基于Prometheus的微服务监控实践
查看>>
深入剖析通信层和RPC调用的异步化(下)
查看>>
英特尔发布CPU新架构,突破性采用3D堆栈法
查看>>
CNCF接纳Harbor为沙箱项目
查看>>
三问百度云,ABC如何帮它跑赢马拉松?
查看>>